package com.qwert.shortlink.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qwert.shortlink.project.dao.entity.ShortLink;
import com.qwert.shortlink.project.dto.req.shortlink.ShortLinkCreateReqDTO;
import com.qwert.shortlink.project.dto.req.shortlink.ShortLinkPageReqDTO;
import com.qwert.shortlink.project.dto.req.shortlink.ShortLinkUpdateReqDTO;
import com.qwert.shortlink.project.dto.resp.shortlink.ShortLinkCountRespDTO;
import com.qwert.shortlink.project.dto.resp.shortlink.ShortLinkCreateRespDTO;
import com.qwert.shortlink.project.dto.resp.shortlink.ShortLinkPageRespDTO;

import java.util.List;

/**
 * @author qwert
 * @version 1.0.0
 * @create 2024/7/2 11:20
 **/
public interface IShortLinkService extends IService<ShortLink> {

    /**
     * 创建短链接
     * @param shortLinkCreateReqDTO 创建短链接请求参数
     * @return 短链接创建信息
     */
    ShortLinkCreateRespDTO createShortLink(ShortLinkCreateReqDTO shortLinkCreateReqDTO);

    /**
     * 查询短链接分组数据
     * @param shortLinkPageReqDTO 分页查询请求数据
     * @return  分页响应数据
     */
    IPage<ShortLinkPageRespDTO> pageShortLink(ShortLinkPageReqDTO shortLinkPageReqDTO);

    /**
     * 查询分组内短链接数量
     * @param gids 分组id列表
     * @return 分组数量响应数据
     */
    List<ShortLinkCountRespDTO> listGroupShortLinkCount(List<String> gids);

    /**
     * 更新短链接信息
     * @param shortLinkUpdateReqDTO 修改短链接信息请求数据
     * @return 修改行数
     */
    Integer updateShortLink(ShortLinkUpdateReqDTO shortLinkUpdateReqDTO);

    /**
     * 短链接跳转
     * @param shortUri 短链接后缀
     * @param request HTTP 请求
     * @param response HTTP 响应
     */
//    void restoreUrl(String shortUri, ServletRequest request, ServletResponse response) throws IOException;
}
